package modelo.carrera.tests;

import static org.junit.Assert.*;

import java.util.Date;

import org.junit.Test;

import modelo.carrera.Carrera;
import modelo.carrera.Conductor;
import modelo.carrera.Jugador;
import modelo.comportamiento.Comportamiento;
import modelo.escenario.Ciudad;
import modelo.geometria.Vector;
import modelo.vehiculos.Automovil;
import modelo.vehiculos.SentidoVehiculo;
import modelo.vehiculos.*;

public class TestCarrera {
	
	@Test
	public void TestCarrera_JugadoresCompitiendo_EsFinalizada(){
		
		Ciudad escenario = Ciudad.getCiudad();
		
		Date fechaCarrera = new Date();
		
		Vector puntoInicialCarrera = new Vector(45,3);
		Vector puntoFinalCarrera = new Vector(41,32);
		
		Carrera carrera = new Carrera(1, escenario, fechaCarrera, puntoInicialCarrera, puntoFinalCarrera);
		
		double anchoFitito = 3;
		double largoFitito = 2;
		double velocidadMaxFitito = 125;
		double aceleracionMaxFitito = 10;
		double frenadoMaxFitito = 10;
	
		Conductor conductorSchumacher = new Conductor(new Comportamiento());
		
		Automovil fitito = new Automovil(conductorSchumacher, puntoInicialCarrera, puntoFinalCarrera, SentidoVehiculo.OESTE, largoFitito, anchoFitito, 0, velocidadMaxFitito, aceleracionMaxFitito, frenadoMaxFitito);
		
		Jugador jugadorSchumacher = new Jugador("MichaelSchumacher", fitito);
		
		carrera.agregarJugador(jugadorSchumacher);
		
		double anchoCombi = 3;
		double largoCombi = 4;
		double velocidadMaxCombi = 145;
		double aceleracionMaxCombi = 10;
		double frenadoMaxCombi = 10;
		
		Conductor conductorMontoya = new Conductor(new Comportamiento());
		
		//Automovil combi = new Automovil(conductorMontoya, puntoInicialCarrera, puntoFinalCarrera, SentidoVehiculo.OESTE, largoCombi, anchoCombi, 0, velocidadMaxCombi, aceleracionMaxCombi, frenadoMaxCombi);
		
		/* este auto gana porque la llegada es igual a la posicion de inicio */
		Automovil combi = new Automovil(conductorMontoya, puntoInicialCarrera, puntoInicialCarrera, SentidoVehiculo.OESTE, largoCombi, anchoCombi, 0, velocidadMaxCombi, aceleracionMaxCombi, frenadoMaxCombi);
		
		Jugador jugadorMontoya = new Jugador("JuanPabloMontoya", combi);
		
		carrera.agregarJugador(jugadorMontoya);
		
		carrera.iniciarCarrera();
		
		assertTrue(carrera.getFinalizada());
		
	}

}
